import CryptoJS from "crypto-js"; //crypto-js

//秘钥必须为：8/16/32位
const key = "1234123412ABCDEF";
const iv = "ABCDEF1234123412";
const parsedKey = CryptoJS.enc.Utf8.parse(key); //十六位十六进制数作为密钥
const parsedIv = CryptoJS.enc.Utf8.parse(iv); //十六位十六进制数作为密钥偏移量

// 加密函数
//此方法每次得到的密文都不一样，下面两个方法每次都是一样的
function encryptString(text) {
//   let wordArray = CryptoJS.enc.Utf8.parse(text);
//   return CryptoJS.AES.encrypt(wordArray, key).toString();
  return CryptoJS.AES.encrypt(text, key).toString();
}

// 解密函数
function decryptString(encryptText) {
  return CryptoJS.AES.decrypt(encryptText, key).toString(CryptoJS.enc.Utf8);
}

function encryptECBString(text) {
  return CryptoJS.AES.encrypt(text, parsedKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString();
}
function decryptECBString(encryptText) {
  const decrypted = CryptoJS.AES.decrypt(encryptText, parsedKey, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

function encryptCBCString(text) {
  return CryptoJS.AES.encrypt(text, parsedKey, { iv: parsedIv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }).toString();
}
function decryptCBCString(encryptText) {
  const decrypted = CryptoJS.AES.decrypt(encryptText, parsedKey, { iv: parsedIv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

export { encryptString, decryptString, encryptECBString, decryptECBString, encryptCBCString, decryptCBCString };
